package done.easy_501_600;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * 509. Fibonacci Number 斐波那契数，
 * <p>
 * 通常用 F(n) 表示，形成的序列称为斐波那契数列。该数列由 0 和 1 开始，后面的每一项数字都是前面两项数字的和。也就是：
 * <p>
 * F(0) = 0,
 * F(1) = 1,
 * F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
 * 给定 N，计算 F(N)。
 * <p>
 * 示例 1：
 * 输入：2
 * 输出：1
 * 解释：F(2) = F(1) + F(0) =  1 + 0 = 1
 * <p>
 * 示例 2：
 * 输入：9
 * 输出：34
 * 解释：F(9) = F(8) + F(7) = 21 + 13 = 34
 * <p>
 * 递归方法肯定不能用会报错 stackOverflow 异常
 *
 * @author wangxiaozhe
 */
@Slf4j
public class FibonacciNumber {

    @SuppressWarnings("all")
    public int fib(int num) {
        // 190329 first
        // 190408 second 用了两次
        return -1;
    }

    @Test
    public void test() {
        log.info("result:{}", fib(9));
    }
}








































/*
public int fib(int num) {
    if (num == 0) {
        return 0;
    } else if (num == 1) {
        return 1;
    }

    int i = 0;
    int j = 1;
    int temp = 0;
    for (int k = 2; k <= num; k++) {
        // 上一次的 和
        temp = i + j;

        // 下一次的 i
        i = j;

        // 下一次的 j
        j = temp;
    }
    return j;
}
*/
